//指在定义函数、接口或类的时候，不预先指定具体的类型，而在使用的时候再指定具体类型的一种特性
(()=>{
   
    function getArr1(value:number, count: number):number[]{
        
        const arr: number[] = []
        
        for(let i = 0; i < count ; i++){
            arr.push(value)
        }
        
        return arr
    }

    const arr1 = getArr1(111,5)
    console.log(arr1)


    function getArr2(value:string, count: number):string[]{
        
        const arr: string[] = []
        
        for(let i = 0; i < count ; i++){
            arr.push(value)
        }
        
        return arr
    }

    const arr2 = getArr2('aa',5)
    console.log(arr2)

    function getArr<T>(value:T, count: number):T[]{
        const arr: T[] = []
        // const arr:Array[T] = []
        for(let i = 0; i < count ; i++){
            arr.push(value)
        }
        return arr
    }

    // const arr3 = getArr('bb',5)
    // const arr4 = getArr(121,5)
    // console.log(arr3)
    // console.log(arr4)
    const arr5 = getArr<number>(200.15445,5)
    const arr6 = getArr<string>('arstbj',5)
    console.log(arr5)
    console.log(arr6)
    console.log(arr5[0].toFixed(2))
    console.log(arr6[0].split(''))


})()